package org.opens.sql.genConfig;

import lombok.Builder;
import lombok.Data;
import lombok.Singular;
import org.opens.sql.constant.GenSqlType;
import org.opens.util.DatabaseConnectInfoEntity;

import java.util.List;

@Data
@Builder
public class GenSqlConfig {

    /**
     * 数据库信息
     */
    private DatabaseConnectInfoEntity databaseConnectInfo;

    /**
     * 生成文件的存放路径
     */
    private String genPath;

    /**
     * 控制生成entity的公共属性
     */
    private GenEntityPublicConfig genEntityPublicConfig;

    /**
     * 控制生成mapper的公共属性
     */
    private GenMapperPublicConfig genMapperPublicConfig;

    /**
     * 作者信息
     */
    private AuthorInfo authorInfo;

    /**
     * 控制生成哪些表的实体-方式1
     */
    @Singular
    private List<String> genTables;

    /**
     * 控制生成哪些表的实体-方式2, 同时配置genTables属性时, 该属性生效
     */
    @Singular
    private List<TableConfig> tableConfigs;

    /**
     * 控制生成那些实体, @Singular注解应用于集合型字段上, 可以使该字段可以增量添加元素
     */
    @Singular
    private List<GenSqlType> genSqlTypes;

    /**
     * 控制生成前先删除
     */
    private boolean genPreClear;

    /**
     * 控制生成后是否打开目标目录
     */
    private boolean genEndOpenGenPath;

    /**
     * 控制是否将生成的文件自动打包
     */
    private boolean genResult2zip;

    /**
     * 生成service的配置
     */
    private GenServicePublicConfig genServicePublicConfig;

    /**
     * 生成controller的配置
     */
    private GenControllerPublicConfig genControllerPublicConfig;

    /**
     * 公共常量存储路径
     */
    private String constantPackageInfo;

    /**
     * 是否生成constant
     */
    private Boolean genConstant;

}
